#ifndef __EKF_FRAMEWORK_I_H__
#define __EKF_FRAMEWORK_I_H__

#include <framework/framework.h>

#include <framework/lib/lib_i.h>

#include <framework/consio/consdebug_i.h>
#include <framework/consio/console_i.h>
#include <framework/consio/io_i.h>

#include <framework/mem/pmem_i.h>
#include <framework/mem/vmem_i.h>
#include <framework/mem/mm_i.h>

#include <framework/cpu/boot_ap_S_i.h>
#include <framework/cpu/task_i.h>
#include <framework/cpu/lcpu_i.h>

#include <framework/intr/intr_i.h>
#include <framework/intr/lapic_i.h>
#include <framework/intr/ioapic_i.h>
#include <framework/intr/pic_i.h>

#include <framework/debug/stab_i.h>

#include <framework/sys/acpi_i.h>
#include <framework/sys/smbios_i.h>
#include <framework/sys/hpet_i.h>
#include <framework/sys/sys_i.h>

#include <framework/context/context_i.h>

#include <framework/elf/elf_mod_i.h>

#include <framework/userspace_i.h>

/* Defined in init.S and kernel.ld */
extern char				_start[], _text[], _text_end[], _bss[], _end[];
extern char             user_lib[], user_lib_end[];
extern struct stab_s	__STAB_BEGIN__[];		// Beginning of stabs table
extern struct stab_s	__STAB_END__[];			// End of stabs table
extern char				__STABSTR_BEGIN__[];	// Beginning of string table
extern char				__STABSTR_END__[];		// End of string table

extern uint32_t   mb_magic;
extern physaddr_t mb_info_phys;

/* Routines and symbols defined in kernel.S */
/* The entries of ISR interrupt */
extern void *isr[];
/* Entries of IRQ interrupt */
extern void *irq[];

/* space for holding the task gates */
extern unsigned char tasks_start[];

/* The interrupt entry defined in kernel.S */
/* The interrupt entry for syscall */
extern char syscall[];
/* For the UMK CALL */
extern char umk_call[];
/* For return of kernel to user call */
extern char kcb_ret[];
/* For Inter Processor Interrupt */
extern char ipi[];
/* temprory space for mapping  */
extern char ktmp[];

#define __NAME    "EKF"
#define __VERSION "20110403"

#endif
